package com.matthew.luckyone.service;


import com.matthew.luckyone.dao.ClazzDao;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Random;

@Service
public class ClazzService {

    @Resource
    private ClazzDao clazzDao;


    /**
     * 新增学生
     *
     * @param clazzName
     * @param studentName
     * @return
     */
    public boolean addStudent(String clazzName, String studentName) {
        List<String> list = studentList(clazzName);
        if (list == null) {
            return false;
        } else {
            // 如果班级中存在此人则返回否
            if (list.contains(studentName)) {
                return false;
            }
            list.add(studentName);
            return true;
        }
    }

    /**
     * 移除学生
     *
     * @param clazzName
     * @param studentName
     * @return
     */
    public boolean deleteStudent(String clazzName, String studentName) {
        List<String> list = studentList(clazzName);
        if (list == null) {
            return false;
        } else {
            // 如果班级中不存在此人则返回否
            if (!list.contains(studentName)) {
                return false;
            }
            list.remove(studentName);
            return true;
        }
    }

    /**
     * 新增班级
     *
     * @param name
     * @return
     */
    public boolean addClazz(String name) {
        List<String> list = studentList(name);
        // 不存在则创建
        if (list == null) {
            clazzMap().put(name, new ArrayList<>());
            return true;
        }
        return false;
    }

    /**
     * 删除班级
     *
     * @param name
     * @return
     */
    public boolean deleteClazz(String name) {
        List<String> list = studentList(name);
        // 不存在则返回否
        if (list == null) {
            return false;
        }

        clazzMap().remove(name);
        return true;
    }

    /**
     * 根据班级名称获取学生
     *
     * @param clazzName
     * @return
     */
    public String luckyOne(String clazzName) {
        List<String> studentList = studentList(clazzName);

        if (studentList == null) {
            return "此班下还没有人哦~";
        }

        int size = studentList.size();

        // 获取幸运儿下标,  Random().nextInt(size) 从 [0 - size) 的随机数
        int i = new Random().nextInt(size);

        // 通过下标获取幸运儿名称
        String luckyName = studentList.get(i);

        // 返回名称
        return luckyName;
    }

    /**
     * 根据班级名称获取学生集合
     *
     * @param clazzName
     * @return
     */

    public List<String> studentList(String clazzName) {
        return clazzMap().get(clazzName);
    }


    /**
     * 获取所有班级以及学生
     *
     * @return
     */
    public Map<String, ArrayList<String>> clazzMap() {
        return clazzDao.clazzMap();
    }


}
